#include "Game.h"
#include "EscenaJugando.h"
#include "Player.h"

#include <gl/freeglut.h>
#include <iostream>
#include <sstream>
#include <string>

#include "TextActor.h"



EscenaJugando::EscenaJugando():IEscena("Escena jugando")
	{

	}
	
void EscenaJugando::load()
	{
		managerMapa = new MapManager();
		
		jugador = new Player(g->getNewID(),NULL);

		ia = new actorManager();		
			
		pm = new PathManager();

		managerMapa->cargarMapa(string("casa.tmx"));
		
		qm = new QuestManager(string("listadoQuests.xml"));

		g->addActor(jugador);
		
		cargada = true;
		
	}

void EscenaJugando::render()
	{
		glClear(GL_COLOR_BUFFER_BIT);
		glLoadIdentity();
		

		g->getCamara()->translate();
		managerMapa->getMapa()->render();
			
		hash_map<ID,Actor*> *actores = g->getActors();
		hash_map<ID,Actor*>::iterator it;
			
		for (it = actores->begin(); it != actores->end(); ++it)
			it->second->render();

		//#ifdef _DEBUG
			managerMapa->renderTriggers();
		//#endif
		
		g->getCamara()->unTranslate();

		//#ifndef ___DEBUG
		if (!(g->getLoops()%200)){
			std::ostringstream cadena;		
			cadena << "FPS: " << G_FPS->getMedia();
			glutSetWindowTitle(cadena.str().c_str());
		}
		/*
		glPushMatrix();
			glTranslatef(10.f,20.f,0.f);
			glScalef(1.f,-1.f,0.f);
			//g->getFuente()->Render(cadena.str().c_str());
		glPopMatrix();*/
		//#endif 
		
		
		
		glutSwapBuffers();
	}

void EscenaJugando::update( float speedFactor )
	{
		g->getCamara()->update(-jugador->getX(),-jugador->getY(),
			managerMapa->getMapa()->getAnchoMapa()*managerMapa->getMapa()->getAnchoTile(),
			managerMapa->getMapa()->getAltoMapa()*managerMapa->getMapa()->getAltoTile()
			);
		
		pm->update();
		
		managerMapa->comprobarTriggers(jugador->getX(),jugador->getY());
	}
	
EscenaJugando::~EscenaJugando(void)
	{
		delete managerMapa;
		delete jugador;
		delete ia;
		delete qm;
	}

